package cn.tedu._04mybatis.mapper;

import cn.tedu._04mybatis.pojo.Weibo;
import cn.tedu._04mybatis.pojo.WeiboIndexVO;
import cn.tedu._04mybatis.pojo.WeiboMapVO1;
import cn.tedu._04mybatis.pojo.WeiboMapVO2;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * MyBatis注解：告知底层为此接口创建实现类并定义数据访问逻辑
 */
@Mapper
public interface WeiboMapper {
    /**微博表中插入数据*/
    /**
     * @Insert:
     * 根据注解中的SQL转为JDBC代码操作数据库，
     * 并返回接口方法指定的返回值类型
     */
    //@Insert("INSERT INTO weibo VALUES(NULL,#{content},#{created},#{userId})")
    int insertWeibo(Weibo weibo);

    /**根据微博id查询指定的微博信息*/
    //注意：如果数据表字段名和实体类属性名不一致,使用别名,比如:user_id 和 userId
    //@Select("SELECT id,content,created,user_id userId FROM weibo WHERE id=#{id}")
    Weibo selectWeiboById(int id);

    /**查询所有微博信息*/
    //@Select("SELECT id,content,created,user_id userId FROM weibo")
    List<Weibo> selectWeiboIndex();

    /**删除指定id的微博*/
    //@Delete("DELETE FROM weibo WHERE id=#{id}")
    int deleteWeiboById(int id);

    /**修改指定id的微博信息*/
    //@Update("UPDATE weibo SET content=#{content},created=#{created},user_id=#{userId} WHERE id=#{id}")
    int updateWeiboById(Weibo weibo);

    /**
     * 1.微博首页列表展示:微博id、微博内容、用户昵称
     * 2.微博首页列表展示:微博id、微博内容、用户昵称、发布时间
     */
    List<WeiboIndexVO> selectIndex();

    /**resultMap单表查询示例:根据微博的id查询该条微博的信息，只显示：微博编号id、内容content、用户编号user_id*/
    WeiboMapVO1 selectMapById(Integer wid);

    /**
     * resultMap一对多查询示例
     * 查询指定的用户发布的所有的 **微博信息** ，要求将 **微博信息** 放到一个集合中
     * 要求显示：用户的id、用户昵称、`List<Weibo>集合`
     */
    WeiboMapVO2 selectMapByUserId(Integer uid);
}







